#ifndef SEARCHALGORITHM_H
#define SEARCHALGORITHM_H

#include <QVector>
#include <QString>
#include "sortvisualizerwidget.h"

class SearchAlgorithm {
public:
    virtual ~SearchAlgorithm() {}

    // 执行一步查找操作
    virtual void step() = 0;

    // 查找是否完成（无论是否找到）
    virtual bool isFinished() const = 0;

    // 当前数据（含颜色标记）用于可视化
    virtual const QVector<SortBar>& getData() const = 0;

    // 设置目标值
    virtual void setTarget(int value) = 0;

    // 是否找到了目标
    virtual bool isFound() const = 0;

    // 返回找到的下标（未找到返回 -1）
    virtual int getFoundIndex() const = 0;

    // 算法说明文本（显示在界面上）
    virtual QString getDescription() const = 0;

    // 返回比较次数（用于统计）
    virtual int getAndResetCompareCount() = 0;
};

#endif // SEARCHALGORITHM_H
